/*
package 重复的子字符串;

public class Solution {


    public boolean repeatedSubstringPattern(String s) {
        // 我们发现如何一个串是由字串重复构成的话，那么他的next数组呈现了一个 0 0 0 0 1 2 3 4 ...递增的规律
        // 并且 前面有x个0就待变了后面从1开始递增到n的数列就应该有如下关系： n % x = 0

        // 求next数组(不减一)
        int[] next = new int[s.length()];
        getNext(next, s);
        // 检查next数组是否符合上述规律
        int count = 0; // 统计有多少个0
        while (count < next.length && next[count] == 0)
            count++;
        int i = count;
        while (i < next.length) {
            //  检查后面的数字是不是递增
            if (i - count + 1 != next[i])
                break;
            i++;
        }
        // 能否满足 n % x = 0 且 n + x = next.legth
        int n = i - count;
        */
/*System.out.println("i:" + i);
        System.out.println("count:" + count);
        System.out.println("n + count:" + n + count);
        System.out.println("n % count:" + n % count);*//*

        if ( i == next.length && n % count == 0 )
            return true;
        else
            return false;
    }


    public void getNext(int[] next, String s) {
        int j = 0; // i为后缀末尾，j为前缀末尾
        next[0] = j;
        int length = s.length();
        for (int i = 1; i < length; i++) {
            // 当 s.charAt(i) != s.charAt(j) 时，需要回滚j(从next数组中向前寻找和next[i]相等的最长相等前后缀为多少)
            // next数组中数字的含义：以当前字符为前缀末尾的最长前后缀长度,包含当前字符
            char prefixEnd = s.charAt(j);
            char suffixEnd = s.charAt(i);
            // 不相等时，需要回退
            while (j > 0 && suffixEnd != prefixEnd) {
                j = next[j - 1];  // 不相等时回滚
                prefixEnd = s.charAt(j);
            }
            // 相等时
            if (suffixEnd == prefixEnd) j++; // 相等时则最长前后缀长度加一
            next[i] = j; // j既表示前缀末尾,又表示当前字符的最长前后缀长度
        }
    }

    public void getNext2(int[] next, String s) {
        int j = -1; // i是后缀的末尾,j是前缀的末尾
        next[0] = j;
        for (int i = 1; i < s.length(); i++) {
            // 不相等,回滚
            while (j > -1 && s.charAt(i) != s.charAt(j + 1)) j = next[j];
            // 相等时
            if (s.charAt(i) == s.charAt(j + 1)) j++;
            next[i] = j;
        }
    }
}
*/
